home *** CD-ROM | disk | FTP | other *** search
- \
- \ hanoi.4th --- Towers of Hanoi
- \
-
- S" FORGET-HANOI" DROP 1- FIND NIP [IF] FORGET-HANOI [THEN]
- MARKER FORGET-HANOI
-
- : MOVE-ONE \ c-from c-to ---
- CR ." Move from " SWAP EMIT ." to " EMIT ;
-
- : MOVE \ c-from c-via c-to n ---
- LOCALS| N C B A |
- N 1 =
- IF
- A C MOVE-ONE
- ELSE
- A C B N 1- RECURSE
- A C MOVE-ONE
- B A C N 1- RECURSE
- THEN ;
-
- : #IN \ --- n true | false
- 0. \ -- ud
- PAD 10 ACCEPT \ -- ud n
- PAD SWAP -TRAILING \ -- ud c-addr n'
- >NUMBER \ -- ud' c-addr' n''
- NIP NIP \ -- u n''
- IF DROP FALSE ELSE TRUE THEN ;
-
- : HANOI BEGIN
- PAGE
- ." Towers of Hanoi" CR
- ." ===============" CR CR
- BEGIN CR ." How many disks? " #IN 0=
- WHILE CR ." Please enter number, 0 to quit."
- REPEAT ?DUP
- WHILE
- >R [CHAR] A [CHAR] B [CHAR] C R> MOVE
- CR ." key..." KEY DROP
- REPEAT ;
-